// 接口类型  interface  它是用于定义对象
// 语法  interface 类型名 {属性名:类型}
// type与interface很大差别
// 1：interface有继承特性  interface 类型名 extends 其它类型 {...}
// 2:可重复定义（累加的定义） type做不到

//  type 没有类型限制                      interface 对象
//  type 无继承特性,可用&作替换继续特性     有继续用的extends
//  type重复定义直接报错                   重复定义会累加

// type Person = {
//   name: string
//   age: number
// }

interface Person {
  name: string
  age: number
}
const person: Person = {
  name: '张三',
  age: 18
}

// 2d坐标
interface Point2D {
  x: number
  y: number
}

const point2D: Point2D = {
  x: 10,
  y: 20
}
// 3d坐标
interface Point3D extends Point2D {
  z: number
}

type Tpoint2D = {
  x: number
  y: number
}

type Tpoint3D = Tpoint2D & { z: number }
const point3D2 = {
  x: 10,
  y: 20,
  z: 30
}

const point3D: Point3D = {
  x: 20,
  y: 30,
  z: 50
}
interface RouteType {
  path: string
  name: string
}

interface RouteType {
  meta: { title: string }
}

const route: RouteType = {
  path: '/xxx',
  name: 'xxx',
  meta: { title: '首页' }
}

export {}
